package main

import (
	"fmt"
	"log"
	"os"
)

func main() {
	/*
		(原来是在 ioutil 包中，现在挪到了 io 包和 os 包中)
		os 包：
			os.ReadFile
			os.WriteFile
			os.ReadDir
			os.MkdirTemp
			os.CreateTemp
		io包：
			io.ReadAll
			io.Discard
			io.NopCloser
	*/
	//1.读取文件中的所有的数据
	//fileName := "E:/代码文件/灰太狼/狼堡.txt"
	//data, err := os.ReadFile(fileName)
	//fmt.Println(err)
	//fmt.Println(data)
	//fmt.Println(string(data))

	//2.写出数据
	//fileName1 := "E:/代码文件/灰太狼/羊村.txt"
	//s1 := "我们是朋友，对吗？灰太狼~\n当然啦！！！你可是我最好的朋友！喜羊羊！"
	//err := os.WriteFile(fileName1, []byte(s1), os.ModePerm)
	//fmt.Println(err)
	//
	////3.ReadAll()
	//s2 := "喜羊羊哥哥和爸爸是最好的朋友，我是小灰灰，小羊哥哥和姐姐们都是我的好朋友"
	//r1 := strings.NewReader(s2)
	//data, err := io.ReadAll(r1)
	//fmt.Println(err)
	//fmt.Println(data)
	//fmt.Println(string(data))
	//
	////4.ReadDir(), 读取一个目录下的子内容：子文件和子目录，但是只能读取一层
	//dirName := "E:/代码文件/灰太狼"
	//fileInfos, err := os.ReadDir(dirName)
	//if err != nil {
	//	log.Fatal(err)
	//}
	//fmt.Println(len(fileInfos))
	//for i := 0; i < len(fileInfos); i++ {
	//	fmt.Printf("%T\n", fileInfos[i])
	//	fmt.Printf("第 %d 个：名称：%s，是否是目录：%t\n", i, fileInfos[i].Name(), fileInfos[i].IsDir())
	//}

	//5.临时目录和临时文件
	dir, err := os.MkdirTemp("E:/代码文件/灰太狼", "红太狼")
	if err != nil {
		log.Fatal(err)
	}
	defer os.Remove(dir) //???并没有删除
	fmt.Println(dir)

	file, err := os.CreateTemp(dir, "小灰灰")
	if err != nil {
		log.Fatal(err)
	}
	defer os.Remove(file.Name()) //???并没有删除
	fmt.Printf("%T\n", file)     //*os.File
	fmt.Println(file.Name())
}
